Concurrent Mark Sweep GC
並行マークスイープ
マーキング中に新しいオブジェクトが作られることへの対策
マークされたオブジェクト(黒), マークスタック(灰),残りのオブジェクト(白)
手順
1. ルートオブジェクトのすべてをマークスタックに配置
2. マークされると黒にする
3. ↑これで辿られた子オブジェクトはマークスタックに入る(白から灰になる)
4. マークスタックがなくなると終わり
GC中にオブジェクトが追加されると、黒の中にそれを参照しているオブジェクトがあれば、その黒はいったん灰に戻る。
その後、上の手順を繰り返せば、新たに追加されたオブジェクトも3番目の手順でちゃんと黒になれる
使ってる言語